﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.Skins;
using DevExpress.LookAndFeel;
using KNS.Invoice.UI;
using InvoiceManagement.Controllers;
using DAL;
using BLL;

namespace InvoiceManagement
{
    public partial class frmNhomNguoiDung : KNSFormBase
    {                     
        #region "Khai báo biến"
        public string strAction = "";
        public int intID;
        public string strGroupcode = "";        
        public string strGroupName = "";
        public bool blnIsUse = false;

        public frmNhomNguoiDung()
        {
            InitializeComponent();
        }        
        #endregion

        #region "Các hàm load dữ liệu"
        public void GetAllGroups()
        {
            IList<SYS_GROUP> lst = null;
            SYS_GROUPController sys_Group = new SYS_GROUPController();
            lst = sys_Group.GetAll_Groups();
            grdData.DataSource = lst;
        }
        #endregion 

        #region "Các hàm sự kiện trên form"
        private void frmNhomNguoiDung_Load(object sender, EventArgs e)
        {
            strAction = "Load";
            SetControls();
            GetAllGroups();
            grdData_Click(sender, e);
        }

        private void btnThemMoi_Click(object sender, EventArgs e)
        {
            strAction = "AddNew";
            SetControls();
            ClearText();
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            strAction = "Edit";
            SetControls();
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            bool bln = false;

            SYS_GROUPController sys_Group = new SYS_GROUPController();

            if (CheckData() == true)
            {
                if (strAction == "AddNew")
                {
                    bln = sys_Group.Insert_Sys_Groups(txtGroupCode.Text.Trim().ToString(), txtGroupName.Text.Trim().ToString(), chkIsUse.Checked);
                }
                else
                {
                    if (strAction == "Edit")
                    {
                        bln = sys_Group.Update_Sys_Groups(intID, txtGroupCode.Text.Trim().ToString(), txtGroupName.Text.Trim().ToString(), chkIsUse.Checked);         
                    }
                }
                if (bln == true)
                {
                    KNSMessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    strAction = "Load";
                    SetControls();                    
                    GetAllGroups();
                    grdData_Click(sender, e);
                }
                else
                {
                    KNSMessageBox.Show("Cập nhật thất bại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            strAction = "Load";
            SetControls();
            GetAllGroups();
            grdData_Click(sender, e);
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (gridView1.RowCount > 0)
            {
                if (KNSMessageBox.Show("Bạn có chắc muốn xoá?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                {
                    bool bln = false;
                    SYS_GROUPController sys_Group = new SYS_GROUPController();
                    bln = sys_Group.Delete_Sys_Groups(intID);
                    if (bln == true)
                    {
                        KNSMessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        strAction = "Load";
                        SetControls();
                        GetAllGroups();
                        grdData_Click(sender, e);
                    }
                    else
                    {
                        KNSMessageBox.Show("Cập nhật thất bại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
            else
            {
                KNSMessageBox.Show("Không có dữ liệu để xoá", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
        }

        private void btnTimKiem_Click(object sender, EventArgs e)
        {
            GetAllGroups();
            grdData_Click(sender, e);
        }

        private void grdData_Click(object sender, EventArgs e)
        {
            if (gridView1.RowCount > 0)
            {
                int[] arrSelected = gridView1.GetSelectedRows();
                if (arrSelected != null && arrSelected.Length > 0)
                {
                    int selectedIndex = arrSelected[0];
                    if (selectedIndex >= 0)
                    {
                        Object a = gridView1.GetRow(selectedIndex);
                        if (a != null)
                        {
                            intID = (a as SYS_GROUP).GroupID;
                            strGroupcode = (a as SYS_GROUP).GroupCode.ToString();
                            strGroupName = (a as SYS_GROUP).GroupName.ToString();
                            blnIsUse = (bool)(a as SYS_GROUP).IsUse;

                        }
                    }
                }
                txtGroupCode.Text = strGroupcode;
                txtGroupName.Text = strGroupName;
                chkIsUse.Checked = blnIsUse;
            }
        }
        #endregion 

        #region "Các hàm xử lý khác"
        public void SetControls()
        {
            if (strAction == "Load")
            {
                btnThemMoi.Enabled = true;
                btnSua.Enabled = true;
                btnLuu.Enabled = false;
                btnHuy.Enabled = false;
                btnTimKiem.Enabled = true;
                btnDelete.Enabled = true;

                txtGroupCode.Enabled = false;
                txtGroupName.Enabled = false;
                chkIsUse.Enabled = false;
            }

            if (strAction == "AddNew" || strAction == "Edit")
            {
                btnThemMoi.Enabled = false;
                btnSua.Enabled = false;
                btnLuu.Enabled = true;
                btnHuy.Enabled = true;
                btnTimKiem.Enabled = false;
                btnDelete.Enabled = false;

                txtGroupCode.Enabled = true;
                txtGroupName.Enabled = true;
                chkIsUse.Enabled = true;
            }
        }

        public bool CheckData()
        {
            try
            {
                if (txtGroupCode.Text == string.Empty || txtGroupCode.Text == "")
                {
                    KNSMessageBox.Show("Chưa nhập mã nhóm", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    txtGroupCode.Focus();
                    return false;
                }

                if (txtGroupName.Text == string.Empty || txtGroupName.Text == "")
                {
                    KNSMessageBox.Show("Chưa nhập tên nhóm", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    txtGroupName.Focus();
                    return false;
                }

                return true;
            }
            catch { return false; }
        }

        public void ClearText()
        {
            txtGroupCode.Text = "";
            txtGroupName.Text = "";
            chkIsUse.Checked = false;
            txtGroupCode.Focus();
        }
        #endregion
                   
    }
}